﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dominio;
using Persistencia;

namespace Interfaces
{
    public class ImpISurtidor : ISurtidor
    {

        private Surtidor BuscarSurtidor(int idBuscado)
        {
            List<Surtidor> surtidores = Sistema.GetSistema().ObtenerSurtidores();
            foreach (Surtidor s in surtidores)
            {
                if (s.GetIdSurtidor() == idBuscado)
                {
                    return s;
                }
            }
            return null;
        }

        private Manguera BuscarManguera(Surtidor idSurtidor, Manguera idManguera)
        {
            Manguera retorno = new Manguera(null, null);
            foreach (Manguera m in idSurtidor.GetMangueras())
            {
                if (m.getIdManguera() == idManguera.IdManguera)
                {
                    retorno = m;
                    break;
                }
            }
            return retorno;
        }

        public List<Surtidor> ObtenerListaSurtidores()
        {
            return Sistema.GetSistema().ObtenerSurtidores();

            /*
            List<Surtidor> listaRetorno = new List<Surtidor>();
            Manguera aux = new Manguera();
            List<ObjetoPersistible> lista = aux.Select(aux);
            List<int> listaAux = new List<int>();
            foreach (Manguera obj in lista)
            {
                if (!listaAux.Contains(obj.Surtidor.IdSurtidor))
                { 
                    listaRetorno.Add(obj.Surtidor);
                    listaAux.Add(obj.Surtidor.IdSurtidor);
                }
            }
            return listaRetorno;
            */
        }

        public void CrearSurtidor()
        {
            Surtidor surtidor = new Surtidor();
            Sistema.GetSistema().AgregarSurtidor(surtidor);
            surtidor.Create();
        }

        public void AgregarManguera(Surtidor idSurtidor, TanqueCombustible idTanque)
        {
            Manguera man = new Manguera(idTanque, idSurtidor);
            Sistema.GetSistema().AgregarManguera(man);
            idSurtidor.AgregarManguera(man);
        }

        public void QuitarManguera(Surtidor idSurtidor, Manguera idManguera)
        {
            idSurtidor.EliminarManguera(idManguera);
            idSurtidor.Delete();
        }

        public void EliminarSurtidor(Surtidor idSurtidor) {
            foreach (Manguera m in idSurtidor.GetMangueras())
            {
                m.Delete();
            }
            idSurtidor.Borrado = 1;
            idSurtidor.Delete();
        }
        
        public List<Manguera> ObtenerListaMangueras(Surtidor idSurtidor) {
            return idSurtidor.GetMangueras();
        }
        
        public String ObtenerTipoCombustiblePorIdSurtidorYManguera(Surtidor idSurtidor, Manguera idManguera) {
            return ""; // idManguera.Tanque.Contenido.Nombre;
        }
        
        public Surtidor ObtenerSurtidorPorId(int idSurtidor)
        {
            Sistema sistema=Sistema.GetSistema();
            List<Surtidor> surtidores = sistema.ObtenerSurtidores();
            Surtidor retorno = null;
            foreach (Surtidor s in surtidores)
            {
                if (s.IdSurtidor == idSurtidor)
                {
                    retorno = s;
                }
            }
            return retorno;
        }

        public Manguera ObtenerMangueraPorIdSurtidorYManguera(Surtidor idSurtidor, Manguera idManguera)
        {
            foreach (Manguera m in idSurtidor.GetMangueras())
            {
                if (m.IdManguera == idManguera.IdManguera)
                {
                    return m;
                }
            }
            return null;
        }

        public List<Surtidor> ObtenerListaSurtidoresTodos()
        {
            return Sistema.GetSistema().ObtenerTodosSurtidores();
        }

    }
}
